% BEGIN LICENSE BLOCK
% Version: CMPL 1.1
%
% The contents of this file are subject to the Cisco-style Mozilla Public
% License Version 1.1 (the "License"); you may not use this file except
% in compliance with the License.  You may obtain a copy of the License
% at www.eclipse-clp.org/license.
% 
% Software distributed under the License is distributed on an "AS IS"
% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See
% the License for the specific language governing rights and limitations
% under the License. 
% 
% The Original Code is  The ECLiPSe Constraint Logic Programming System. 
% The Initial Developer of the Original Code is  Cisco Systems, Inc. 
% Portions created by the Initial Developer are
% Copyright (C) 2006 Cisco Systems, Inc.  All Rights Reserved.
% 
% Contributor(s): Joachim Schimpf, Kish Shen, Warwick Harvey, IC-Parc
% 
% END LICENSE BLOCK
%\documentstyle[11pt,html,a4wide,epsf,ae,aecompl]{book}

\documentclass[11pt,a4paper]{book}
\usepackage{hevea}
\usepackage{alltt}
\usepackage{graphics}
%\usepackage{html}
\usepackage{epsf}
\usepackage{ae}
\usepackage{aecompl}
\usepackage{tocbibind}
\usepackage{makeidx}
\usepackage{hyperref}

\topmargin -1cm
\oddsidemargin 0cm
\evensidemargin 0cm
\textwidth 16cm
\textheight 22.5cm


\usepackage{../../texinputs/eclipse}
\input{../../texinputs/sepiachiphtml}


\makeindex

\title{{\Huge \eclipse\ Internals Manual}\\
	\vspace{1cm}
	Release \eclipseversion
    }
\author{
Joachim Schimpf
\and Kish Shen
\and Warwick Harvey
}

\begin{document}

\maketitle

% Needed to adjust left/right pages properly
\setcounter{page}{2}
% Suppress printing of the page number on this page
\pagestyle{empty}

\vfill

\copyright\ 2003 -- 2006 Cisco Systems, Inc.

\bigskip\bigskip\bigskip\bigskip\bigskip\bigskip

%--------------------------------------------------------------
\cleardoublepage
\pagestyle{plain}
\pagenumbering{roman}

\begin{latexonly}
\tableofcontents
\listoffigures
\end{latexonly}

%--------------------------------------------------------------
\cleardoublepage
\pagenumbering{arabic}

%----------------------------------------------------------------------
\chapter{Introduction}
%----------------------------------------------------------------------
This is an evolving document, supposed to provide a high level
overview of the {\eclipse} implementation.
Selected implementation aspects are discussed and described in
greater detail.

Information herein has been compiled from different
sources and is not always in a uniform style. Sadly, many of
the original implementation reports that existed for various
components, did not survive the demise of ECRC, {\eclipse}'s
original birthplace.


%----------------------------------------------------------------------
\chapter{File and Directory Map}
%----------------------------------------------------------------------
Overview of the source tree, and content of directories:
\begin{description}
\item[toplevel directory] Configuration and install scripts
\item[legal/] Licence texts.

\item[Kernel/] The kernel of the {\eclipse}, for historical reasons sometime
	called {\em sepia}.
	This consists of C code and Prolog/{\eclipse} code for runtime
	system, built-in predicates, and core libraries.
    \begin{description}
    \item[src/] C sources and header files for the runtime
    	core of {\eclipse}: virtual machine emulator, most built-in predicates,
	memory management, runtime tables and data structures, I/O.
    \item[lib/] Prolog and {\eclipse} sources
	\begin{description}
	\item[kernel.pl,events.pl,...] Built-in predicate implementation
	\item[lists.pl,calendar.ecl,...] Basic libraries
	\item[version.pl] current patch number
	\end{description}
    \end{description}

\item[Shm/] A memory management library in C, used for heap management in
	{\eclipse}.

\item[ecrc_solvers/] Solver libraries developed by the European Computer
	Industry Research Centre ECRC (chr, propia, conjunto, r).
    \begin{itemize}
    \item Constraint Handling rules lib(chr)
    \item Generalised Propagation lib(propia)
    \item Set solver lib(conjunto)
    \end{itemize}

\item[icparc_solvers/] Solver and support libraries developed at IC-Parc,
	Imperial College London.
    \begin{itemize}
    \item ic interval solver group
    \item eplex linear/mip solver, column generation
    \item Constraint Handling rules lib(ech)
    \item various global constraints
    \item fd/ic set solver
    \item regular expressions
    \item symmetry libraries
    \item graph algorithms
    \item probing
    \item symbolic solvers
    \item repair and tentative constraints
    \end{itemize}

\item[pt_libraries/] Utility libraries developed by Parc Technologies Ltd.
    \begin{itemize}
    \item code instrumentation
    \item cross referencer
    \item code checker
    \item pretty printer
    \item coverage analyser
    \end{itemize}

\item[Contrib/] A collection of 3rd party libraries, e.g.
    \begin{itemize}
    \item A subset of the `Edinburgh' public domain libraries
    \item Cardinal set solver by Francisco Azevedo
    \item XML library by John Fletcher
    \end{itemize}

\item[lib_tcl/] Tcl/Tk interface and the TkEclipse GUI.

\item[JavaInterface/] Code for embedding {\eclipse} in Java, consisting of
    \begin{description}
    \item[ec_java.c] C JNI code
    \item[src/com/parctechnologies/eclipse/] Java sources
    \end{description}
\item[Oci/] Interface for databases (Oracle, MySQL)
\item[Visualisation/] The visualisation client, in Java.
\item[Mercury/] Libraries ported from the Mercury system.
\item[documents/] Documentation sources.
    \begin{description}
    \item[applications/] Applications Tutorial
    \item[bips/] Reference Manual Built-Ins
    \item[embedding/] Embedding Manual
    \item[internal/] Internals Manual
    \item[libman/] Constraint Library Manual
    \item[tutorial/] {\eclipse} Tutorial
    \item[userman/] User Manual
    \item[visualisation/] Visualisation Tools Manual
    \end{description}
\end{description}

Overview of a ready built {\eclipse}:
\begin{description}
\item[bin/] 
\item[doc/] 
\item[include/] Include files for interfacing C/C++ code with {\eclipse}
\item[legal/] Licence texts
\item[lib/] Shared libraries, executables, precompiled {\eclipse} libraries,
	{\eclipse} libraries in source form
\item[lib_public/] Third party contributed libraries
\item[lib_tcl/] Tcl/Tk interface and TkEclipse GUI.
\item[man/] UNIX-style man pages
\end{description}
 

%----------------------------------------------------------------------
\chapter{Abstract Machine}
%----------------------------------------------------------------------
\input{kernel}

%----------------------------------------------------------------------
\chapter{Runtime System Components}
%----------------------------------------------------------------------
\input{runtime}
\input{gc}
\input{debugger}
%\input{globalstate}
\input{io}

%----------------------------------------------------------------------
\chapter{Built-Ins}
%----------------------------------------------------------------------
\input{builtins}

\appendix
\input{umscmacros}


\newpage
\printindex
\newpage
\bibliography{sepiachip}
\bibliographystyle{plain}
\end{document}
